package com.template.service;

import com.mybatisflex.core.service.IService;
import com.template.domain.entity.SysUser;
import com.template.domain.param.AuthParams;
import com.template.domain.param.UserParams;
import com.template.domain.vo.Sys;
import com.template.domain.vo.SysUserVo;

import java.util.List;

/**
 * 服务层。
 *
 * @author dong
 * @since 2023-09-03
 */
public interface SysUserService extends IService<SysUser> {


    /**
     * 获取用户所有权限码
     */
    List<String> getUserPerms(Long userId);

    /**
     * 分配角色
     */
    void assignRole(Long userId, List<Long> roleIds);

    /**
     * 根据权限生成路由
     */
    List<Sys.Route> getRouteByPerms(Long userId);

    /**
     * 用户登录并验证
     *
     * @return 登录成功时的token
     */
    String login(AuthParams.Login param);

    /**
     * 通过手机号登录并验证
     *
     * @return 登录成功时的token
     */
    String loginByPhone(AuthParams.LoginByPhone param);

    /**
     * 修改密码（通过旧密码更改，主要为用户自己更改）
     */
    void updatePwd(Long userId, UserParams.UpdatePwd param);

    /**
     * 修改密码（管理员直接更改密码）
     */
    void updatePwdById(UserParams.Repass params);

    /**
     * 用户登录之后获取的用户信息
     */
    SysUserVo.Login getUserInfo(Long userId);

    /**
     * 获取用户信息列表，并查出创建人名称
     */
    List<SysUserVo.WithCreateUser> listWithCreateUser();

//    @Override
//    boolean updateById(SysUser entity);
}
